#include "apps.h"

int app() {
    ThreadPool pool(2);
    SyncQueue<std::function<void()>> queue(10);


    //! void put(const T& x) 万能引用，支持右值
    queue.put([](){
        std::this_thread::sleep_for(std::chrono::seconds(2));
        std::cout << std::this_thread::get_id() << std::endl;
    });

    queue.put([](){
        std::cout << "Hello World" << std::endl;
    });


    std::function<void()> job;
    queue.pop(job);
    pool.enqueue(job);


    //! Hello World会在第一个job之前执行完成
    queue.pop(job);
    pool.enqueue(job);
    

    return 0;
}

//! 添加这个，可以直接使用g++编译，不用bazel
// g++ apps.cpp -o main  -std=c++11 -lpthread
int main(int argc, char* argv[]) {
    app();
    return 0;
}